我似乎在 Django 中遇到了 ManyToMany 关系的问题,我似乎没有得到正确的管理屏幕。我想为地址字段显示一个stackedinline,但是我只得到一个Dropbox。有人可以帮忙吗,下面是我的代码。
模型.py
class AddressType(models.Model):
TypeCode = models.CharField('Address Type', max_length=50, blank=False, null = False)
Description = models.TextField('Description')
def __unicode__(self):
return self.TypeCode
class Address(models.Model):
AddressType = models.ForeignKey(AddressType)
Address = models.TextField('Address', blank=False, null=False)
def __unicode__(self):
return self.AddressType.TypeCode
class BusinessPartner(models.Model):
FullName = models.CharField('Full Name', max_length=50, blank=False, null=False)
PartnerType = models.ForeignKey(PartnerType)
Company = models.CharField('Company', max_length=100, blank=True, null=True)
Website = models.URLField('Website', blank=True, null=True)
Address = models.ManyToManyField(Address,through='AddressPartner_Assn')
def __unicode__(self):
if self.Company:
return self.FullName + '-' + self.Company
else:
return self.FullName
class AddressPartner_Assn(models.Model):
Address = models.ForeignKey(Address)
BusinessPartner = models.ForeignKey(BusinessPartner)
Admins.py
=========
class AddressTypeAdmin(admin.ModelAdmin):
list_display = ('TypeCode','Description')
search_fields = ['TypeCode','Description']
class AddressAdmin(admin.ModelAdmin):
list_display = ['Address']
search_fields = ['Address']
list_filter = ['AddressType']
class AddressInlineAdmin(admin.StackedInline):
model = BusinessPartner.Address.through
extra = 1
class BusinessPartnerAdmin(admin.ModelAdmin):
list_display = ('__unicode__','FullName','PartnerType','Company')
inlines = [AddressInlineAdmin,]
search_fields = ['FullName','Company']
list_filter = ('PartnerType',)
raw_id_fields = ('PartnerType',)