我不确定这是否是我的错误,限制或错误,但我想得到反馈,如果有解决方案或解决此问题...
在Django Admin中,我创建了一个基于'到'的多对多内联。模型ReleaseCardCount
。内联链接到父类Card
,父类用于许多子模型。在Django Admin中,我只对配置Card
的子类感兴趣,例如,ActionCard
。
如果我为父Card
模型和内联ReleaseCardCount
配置Django Admin,我可以毫无问题地添加,删除和修改父对象和内联对象。如果我为卡的子对象配置相同的设置,例如ActionCard
,我可以添加内联对象(如果没有)或删除所有内联对象,但我无法修改ActionCard
或者如果内联存在,则为内联对象。如果存在内联对象并且我尝试修改并保存任何数据,我会得到一个"请更正下面的错误"消息,没有错误。
我已将重新创建问题所需的代码最小化到以下内容...
models.py:
from django.db import models
class Release2(models.Model):
release_id = models.AutoField(primary_key=True)
release_name = models.CharField(max_length=100)
def __str__(self):
return self.release_name
class Card2(models.Model):
card_id = models.AutoField(primary_key=True)
card_name = models.CharField(max_length=100)
release_card_count = models.ManyToManyField( Release2, through='ReleaseCardCount2',)
def __str__(self):
return self.card_name
class ReleaseCardCount2(models.Model):
rcc_id = models.AutoField(primary_key=True)
rcc_release = models.ForeignKey(Release2, on_delete=models.CASCADE)
rcc_card = models.ForeignKey(Card2, on_delete=models.CASCADE)
rcc_count = models.PositiveIntegerField(default=1, null=True, blank=True)
class ActionCard2(Card2):
action_card_id = models.AutoField(primary_key=True)
action_name = models.CharField(max_length=100)
def __str__(self):
return self.card_name
admin.py:
from .models import (Release2, Card2, ReleaseCardCount2, ActionCard2)
class ReleaseCardCount2InLine(admin.TabularInline):
model = ReleaseCardCount2
extra = 1
class Card2Admin(admin.ModelAdmin):
inlines = (ReleaseCardCount2InLine,)
model = Card2
class ActionCard2Admin(admin.ModelAdmin):
inlines = (ReleaseCardCount2InLine,)
model = ActionCard2
admin.site.register(Release2)
admin.site.register(Card2, Card2Admin)
admin.site.register(ActionCard2, ActionCard2Admin)
有趣的是,在我的故障排除中,我在开发环境中删除并重新创建了数据库。我发现其中一个以前没有工作的儿童模特突然开始工作了。我怀疑,这是因为我是第一个使用内联配置Django Admin的子模型。要使用上述代码重新创建问题,您可能需要尝试在父Card
模型上运行 FIRST 。在Card
添加,保存然后修改并保存内联对象后,您可以在ActionCard
上尝试。
相关环境信息: