gpt4 book ai didi

Django inlinemodeladmin 验证 - 但具有通用关系

转载 作者:行者123 更新时间:2023-12-04 12:59:51 26 4
gpt4 key购买 nike

我以前有这样的模型:

class AssemblyAnnotation(models.Model):
assembly = models.ForeignKey(Assembly)
type = models.ForeignKey(AssemblyAnnotationType)
...
def clean(self):
from django.core.exceptions import ValidationError
if not self.type.can_annotate_aliases and self.assembly.alias_of_id is not None:
raise ValidationError('The selected annotation type cannot be applied to this assembly.')

结果是,新的 AssemblyAnnotation(通过内联附加)只能具有其类型属性的值的子集,具体取决于父程序集。

这很好用。

现在,是时候将这些注释应用到其他略有不同的对象了:
class ObjectAnnotation(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey()
type = models.ForeignKey(AssemblyAnnotationType)
...
def clean(self):
from django.core.exceptions import ValidationError
if self.content_type == ContentType.objects.get_for_model(Assembly):
if not self.type.can_annotate_aliases and self.content_object.alias_of_id is not None:
raise ValidationError('The selected annotation type cannot be applied to this assembly.')

如您所见,我希望应用相同的规则。但是,有一个问题。我现在使用的 GenericInline 在我的 clean() 方法运行之前没有设置 self.content_type。

有没有办法解决?我这样做错了吗?

谢谢您的帮助。

最佳答案

右手边不会返回一个列表if self.content_type == ContentType.objects.get_for_model(Assembly): ?

我认为你需要做 if self.content_type in ContentType.objects.get_for_model(Assembly):

关于Django inlinemodeladmin 验证 - 但具有通用关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3532991/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com