![](/img/trans.png)
[英]<class> has no foreign key to <class> in Django when trying to inline models
[英]class has no foreign key to class
我的Django模型設置如下:
class Cities(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=255, unique=True)
def __unicode__(self):
return self.name
class Pincode(models.Model):
id = models.AutoField(primary_key=True)
pin = models.CharField(max_length=20, unique=True)
def __unicode__(self):
return self.pin
class Address(models.Model):
id = models.AutoField(primary_key=True)
build_add = models.CharField(max_length=255)
street_add = models.CharField(max_length=255)
area = models.CharField(max_length=255)
city = models.ForeignKey(Cities)
pin = models.ForeignKey(Pincode)
def __unicode__(self):
return self.area
class Classified(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=256)
contact_person = models.CharField(max_length=300, blank=True)
email = models.CharField(max_length=100, blank=True)
address = models.ForeignKey(Address)
subcategory = models.ForeignKey(Subcategory)
area_code = models.CharField(max_length=10, blank=True, default='')
phone_number = models.BigIntegerField(max_length=20, default=0, blank=True)
secondary_number = models.BigIntegerField(max_length=20, default=0, blank=True)
more_numbers = models.CharField(max_length=300, default='', blank=True)
image = S3DirectField(upload_to='s3direct', blank=True)
secondary_image = S3DirectField(upload_to='s3direct', blank=True, default='')
description = models.TextField(max_length=1000, blank=True)
location = LocationField(blank=True, max_length=255)
NO = 'NO'
YES = 'YES'
APPROVAL = ((NO, 'no'), (YES, 'yes'))
active = models.CharField(choices=APPROVAL, default=NO, max_length=3)
verified = models.CharField(choices=APPROVAL, default=NO, max_length=3)
我的問題是,因為我需要在每個條目數據與執行內聯做Classified
中進行編輯Classified
在管理本身的看法。
我已經嘗試了以下方法在同一視圖中編輯地址
class AddressInline(admin.TabularInline):
model = Address
class ClassifiedAdmin(admin.ModelAdmin):
inlines = [AddressInline, ]
search_fields = [
'name',
]
admin.site.register(Classified, ClassifiedAdmin)
但是,這給了我以下錯誤:
<class 'appname.models.Address'> has no ForeignKey to <class'appname.models.Classified'>
我該如何解決這個錯誤? 在嘗試內聯模型和Django admin中的 內聯時,我已經查看並嘗試了Django中<class>到<class>沒有外鍵的解決方案:沒有ForeignKey但它們似乎對我沒有用。
您的內聯代碼可能寫錯了。 內聯應該用於從屬模型實例。 因此,您可以在Address
進行Classified
,但不能相反,因為Classified
取決於具有外鍵關系的Address
。 如果您具有外鍵關系,則可以只使用常規字段,表單最終會帶有一個選擇框,用於選擇地址。 如果您確實希望一個Classified
對象出現在多個地址中,請使用ManyToManyField
而不是ForeignKey
,然后Django會自動為您生成一個中間表。
另外,您在代碼中不需要AutoField
行。 Django默認會生成一個屬性名稱為'id'的自動遞增主鍵。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.