分配外键创建一个新对象
Assigning a foreign key creates a new object
我正在尝试在 django 中创建一对多关系,目前为止运行良好。
@register_snippet
class CarPart(models.Model):
title = models.CharField(max_length=50)
class Meta:
verbose_name_plural = 'Car Parts'
def __str__(self):
return self.title
class CarParts(CarPart):
source_page = ParentalKey(
'home.CarPage', related_name='carparts'
)
carpart = models.ForeignKey(
CarPart,
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+'
)
panels = [
SnippetChooserPanel('catpart'),
]
class CarPage(BasePage):
content_panels = BasePage.content_panels + [
InlinePanel('carparts', label="Car Part"),
]
def get_context(self, request):
context = super().get_context(request)
return context
这工作正常 - 我可以为汽车分配多个汽车零件,但问题是每当我分配汽车零件时,它会自动创建一个新的空对象,而不是汽车零件片段中的原始数据或 table.
当我这样做时它显示正确的部分
{% for part in car.carparts.all %}
{{ part.title }}
{% endfor %}
但是当我从汽车零件片段中删除空对象时,它会删除汽车中的汽车零件,并且 for 循环似乎没有显示任何值,因为相关的汽车零件已被删除。我不明白为什么它会创建新的空对象但会分配正确的 ID。
喜欢:
如果我从页面编辑器 select 汽车零件 engine
并保存它 - 它会创建一个新的空对象,但 ID 似乎是正确的。它在页面布局中显示了引擎,但是当我删除新的空对象时,相关的引擎关联消失了。
CartParts 不应该从 CarPart 继承并且也有它的外键。
class CarParts(models.Model):
source_page = ParentalKey(
'home.CarPage', related_name='carparts'
)
carpart = models.ForeignKey(
CarPart,
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+'
)
panels = [
SnippetChooserPanel('catpart'),
]
我正在尝试在 django 中创建一对多关系,目前为止运行良好。
@register_snippet
class CarPart(models.Model):
title = models.CharField(max_length=50)
class Meta:
verbose_name_plural = 'Car Parts'
def __str__(self):
return self.title
class CarParts(CarPart):
source_page = ParentalKey(
'home.CarPage', related_name='carparts'
)
carpart = models.ForeignKey(
CarPart,
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+'
)
panels = [
SnippetChooserPanel('catpart'),
]
class CarPage(BasePage):
content_panels = BasePage.content_panels + [
InlinePanel('carparts', label="Car Part"),
]
def get_context(self, request):
context = super().get_context(request)
return context
这工作正常 - 我可以为汽车分配多个汽车零件,但问题是每当我分配汽车零件时,它会自动创建一个新的空对象,而不是汽车零件片段中的原始数据或 table.
当我这样做时它显示正确的部分
{% for part in car.carparts.all %}
{{ part.title }}
{% endfor %}
但是当我从汽车零件片段中删除空对象时,它会删除汽车中的汽车零件,并且 for 循环似乎没有显示任何值,因为相关的汽车零件已被删除。我不明白为什么它会创建新的空对象但会分配正确的 ID。
喜欢:
如果我从页面编辑器 select 汽车零件 engine
并保存它 - 它会创建一个新的空对象,但 ID 似乎是正确的。它在页面布局中显示了引擎,但是当我删除新的空对象时,相关的引擎关联消失了。
CartParts 不应该从 CarPart 继承并且也有它的外键。
class CarParts(models.Model):
source_page = ParentalKey(
'home.CarPage', related_name='carparts'
)
carpart = models.ForeignKey(
CarPart,
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+'
)
panels = [
SnippetChooserPanel('catpart'),
]