Rya*_*yan 7 python django django-models django-admin
我有两个看起来像这样的模型:
模型.py
class Client(models.Model):
deal = models.ManyToManyField('Deal', related_name="clients")
class Deal(models.Model):
client = models.ManyToManyField(Client, related_name="deals")
Run Code Online (Sandbox Code Playgroud)
然后在管理员中,我内联了相关模型,以便无论您打开的对象类型如何,都可以轻松进行更改。
管理文件
class ClientInline(admin.TabularInline):
model = Deal.client.through
class DealAdmin(admin.ModelAdmin):
inlines = [ClientInline]
class DealInline(admin.TabularInline):
model = Client.deal.through
class ClientAdmin(admin.ModelAdmin):
inlines = [DealInline]
Run Code Online (Sandbox Code Playgroud)
但是,如果您在 aClient中添加 aDeal然后打开Client详情页面,则不会出现相应的交易。有什么我没有连接的吗?
我刚刚对此进行了测试,您实际上非常接近。
首先,@wowkin2说,您不想ManyToManyField在两个模型中定义 a,所以我可能只是在您的Deal模型中定义它。
其次,替换它:
class DealInline(admin.TabularInline):
model = Client.deal.through
Run Code Online (Sandbox Code Playgroud)
有了这个:
class DealInline(admin.TabularInline):
model = Deal.client.through
Run Code Online (Sandbox Code Playgroud)
一切都应该有效。
所以,你的文件现在应该是这样的:
模型.py
class Deal(models.Model):
client = models.ManyToManyField(Client, related_name="deals")
Run Code Online (Sandbox Code Playgroud)
管理员.py
class ClientInline(admin.TabularInline):
model = Deal.client.through
class DealAdmin(admin.ModelAdmin):
inlines = [ClientInline]
class DealInline(admin.TabularInline):
model = Deal.client.through
class ClientAdmin(admin.ModelAdmin):
inlines = [DealInline]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
323 次 |
| 最近记录: |