Django模型与管理站点相结合

时间:2017-01-18 15:22:52

标签: mysql django

我在模型文件中得到了这些表:

class ingredient (models.Model):
    ingredient_row_id=models.IntegerField(primary_key=True, editable=False)
    ingredient_name=models.CharField(max_length=50)

    def __str__(self):
        return str(self.ingredient_name)

class receip(models.Model):
    receip_row_id=models.IntegerField(primary_key=True, editable=False)
    receip_id=models.IntegerField()
    receip_name=models.CharField(max_length=50)
    receip_ingredient=models.ForeignKey(ingredient)
    receip_ingredient_quantity=models.DecimalField(max_digits=5, decimal_places=2)

    def __str__(self):
        return str(self.receip_name)

class prod(models.Model):
    product_row_id=models.IntegerField(primary_key=True, editable=False)
    product_name=models.CharField(max_length=50)
    product_price=models.DecimalField(max_digits=5, decimal_places=2)
    product_receip=models.ForeignKey(receip)

    def __str__(self):
        return str(self.prod_name)

我想要做的是定义一个由特定收据完成的产品。在此收据中给出了每种成分的数量。

现在我想结合所有这些。让我说我的成分是樱桃和水。

现在收据是樱桃水。所以我在收据中得到了这个: enter image description here

现在我想在管理面板enter image description here

中将其合并

正如您所见,我可以在两个“收据”之间进行选择,因为它指的是receipt_row_id而不是receipt_id。

那么有没有办法“合并”这些,以便我只在管理站点中有一个。也许我需要将models.py更改为smth else或优化admin.py。

有人有个主意吗? 问候

2 个答案:

答案 0 :(得分:0)

不是真的答案,但是:

  • 您不必指定具有ngOnInit() { this.form = this.fb.group({ 'email': ['', [ Validators.required, Validators.pattern('^[a-z]+[a-z0-9._]+@[a-z]+\.[a-z.]{2,5}$')]], 'name': ['', [ Validators.required, Validators.minLength(8)]], 'country': ['', [ Validators.minLength(8)]], 'state': ['', [ Validators.minLength(8)]], 'city': ['', [ Validators.minLength(8)]], 'sexualOpt': ['', [ Validators.minLength(8)]], 'marital': ['', [ Validators.minLength(8)]], 'dateOfBirth': ['', [ Validators.minLength(8)]], 'noChildren': ['', [ Validators.minLength(8)]], 'schoolar': ['', [ Validators.minLength(8)]] }); this.readProfile() ;} readProfile() { firebase.database().ref( 'User/' + 'xs9XP4Aq2aVt0q5CkCuocrYyHwC3' + '/profile' ) .once('value') .then (function(snapshot) { this.form.controls['name'].setValue(snapshot.val().name); console.log(snapshot.val()); }); ;} 属性的字段,Django会自动为您自动生成字段primary_key(具有此属性)。我不确定为什么要明确地在模型中定义这些字段,但我会说你可以删除它们。

  • id始终引用其他模型的主键。因此,没有办法让你如何“组合”这些字段 - 它们基本上是两个不同的记录,应用程序无法找到如何将它们组合起来。看起来您的数据库架构与您要实现的目标不兼容。

答案 1 :(得分:0)

我只是在收据中提及产品的参考。这对我来说很有用。 所以现在看起来像这样:

class ingredient (models.Model):
ingredient_row_id=models.IntegerField(primary_key=True, editable=False)
ingredient_name=models.CharField(max_length=50)

def __str__(self):
    return str(self.ingredient_name)

class receip(models.Model):
receip_row_id=models.IntegerField(primary_key=True, editable=False)
receip_id=models.IntegerField()
receip_name=models.CharField(max_length=50)
receip_ingredient=models.ForeignKey(ingredient)
receip_ingredient_quantity=models.DecimalField(max_digits=5, decimal_places=2)
receip_product=models.ForeignKey(prod)

def __str__(self):
    return str(self.receip_name)

class prod(models.Model):
product_row_id=models.IntegerField(primary_key=True, editable=False)
product_name=models.CharField(max_length=50)
product_price=models.DecimalField(max_digits=5, decimal_places=2)


def __str__(self):
    return str(self.prod_name)