我正在处理的流程
类比 - 考虑具有 层次结构 的购物车,如下所示 -
我有以下
class Product(models.Model):
productid = models.AutoField(primary_key=True)
productname = models.CharField(max_length=255, unique=True)
categoryid = models.ForeignKey(Categorytbl, db_column='CategoryID')
class Optionalitemstbl(models.Model):
optionid = models.AutoField(primary_key=True)
productid = models.ForeignKey(Product)
optionname = models.CharField(max_length=255, unique=True)
optionparentid = models.ForeignKey("self", related_name='+', blank=True, null=True)
def clean(self, *args, **kwargs):
if self.optionparentid and self.productid:
if self.optionparentid.optionid == self.optionid:
from django.core.exceptions import ValidationError
raise ValidationError('Option cannot be an option of itself')
return
super(Optionalitemstbl, self).save(*args, **kwargs)
这使我能够像上面的类比一样创建关系。
然而问题是,它还允许循环关系。假设用户如上所述在管理网站中进行了类推,则他也可以将 HP Type C Child 列为 HP 的父级或表中的任何其他父节点。
请建议 -
谢谢!