如何从 django admin 添加多个客户地址
Posted
技术标签:
【中文标题】如何从 django admin 添加多个客户地址【英文标题】:how to add multiple customer address from django admin 【发布时间】:2018-02-25 15:15:28 【问题描述】:好的,新手来了。所以我正在做一个项目,要求是:我必须制作一个客户模型,管理员/员工可以在其中添加客户的详细信息。 现在的问题是管理员/员工可以针对客户添加多个地址。我找不到任何合适的想法,我该怎么做。 但我还是制定了计划..
我添加了一些代码。
客户模型.py
from __future__ import unicode_literals
from django.contrib.postgres.fields import JSONField
from decimal import Decimal
from django.db import models
from django.utils.safestring import mark_safe
# Create your models here.
class customer(models.Model):
first_name = models.CharField(max_length=150)
last_name = models.CharField(max_length=150)
profile_image = models.FileField()
phone_number = models.BigIntegerField()
def profile(self):
if self.profile_image!="":
return mark_safe('<img src="/media/%s" />' % (self.profile_image))
else:
return "";
profile.short_description = 'Image'
# profile.allow_tags = True
Customer_address-models.py
from __future__ import unicode_literals
from customer.models import customer
from django.db import models
# Create your models here.
class Address(models.Model):
customer = models.ForeignKey(customer,default=0)
country = models.CharField(max_length=150)
state = models.CharField(max_length=150)
city =models.CharField(max_length=150)
pin_code = models.BigIntegerField()
# def customer_address(self):
# return fields = ["country","state","city","pin_code"]
客户 - admin.py
from __future__ import unicode_literals
from .models import customer
from customer_address.models import Address
from django.contrib import admin
# Register your models here.
class CustomerAddressInline(admin.StackedInline):
model = Address
class CustomerAdmin(admin.ModelAdmin):
list_display = ["first_name","last_name","phone_number","profile"]
list_select_related = True
inlines = [
CustomerAddressInline,
]
search_fields = ["first_name","last_name","phone_number"]
fields = ( "first_name","last_name","phone_number",'profile',"profile_image","customer_address" )
readonly_fields = ('profile',)
class Meta:
model = customer
admin.site.register(customer,CustomerAdmin)
想不通,我如何在管理员的客户模块中显示/编辑/插入所有字段作为地址。非常感谢您提供一点帮助 谢谢 P.S:我正在使用 django-1.11.10
【问题讨论】:
【参考方案1】:这里有几处问题。
模型名称的标题是Customer
,而不是customer
。
不知道您为什么要为customer
和customer_address
使用两个应用程序
图像字段profile_image
应使用ImageField
,因为它具有图像验证逻辑。
建议不要在模型上使用返回图像标记的方法,它应该在模板中。
类似<img src=" MEDIA_URL image.imgfile.name "></img>
将导入放在这些组中:future
、standard library
、third-party libraries
、其他 Django 组件、local Django component
、try/excepts
看看django coding style
使用默认值的外键,您应该确保在迁移之前创建对象。看一眼 Setting default value for Foreign Key attribute
from __future__ import unicode_literals
from django.contrib import admin
from .models import Customer, Address
class CustomerAddressInline(admin.StackedInline):
model = Address
@admin.register(Customer)
class CustomerAdmin(admin.ModelAdmin):
list_display = ["first_name","last_name","phone_number"]
inlines = [CustomerAddressInline]
search_fields = ["first_name","last_name","phone_number"]
fields = ("first_name","last_name","phone_number", "profile_image",)
同时澄清您的问题。
【讨论】:
我承认其他问题.. 我之前说过。我必须从管理员视图中添加多个地址选项。地址有 4 个字段,国家、州、城市、密码。当管理员/员工单击添加更多地址时,将显示一个新的 div,其中包含所有地址字段客户资料。请忽略所有其他问题。请帮助我,我该如何管理它们,如果我计划错了.. 如果没有,我该怎么做。以上是关于如何从 django admin 添加多个客户地址的主要内容,如果未能解决你的问题,请参考以下文章
如何在 django admin 中显示多个模型的更改列表?