django-需要在创建相关的forigenkey模型对象时创建模型对象

时间:2016-05-06 11:03:26

标签: django django-signals

我有两个型号"产品细节"和"状态"

class product_detail(models.Model):
     modelNO=models.CharField(max_length=50)
     Channels=models.CharField(max_length=50)

class status(models.Model):
     machineinfo=models.ForeignKey(product_detail,on_delete=models.CASCADE)
     state=models.IntegerField(blank=False,default='0')

在管理页面中,产品详细信息(例如:modelNO = RX100)将由工作人员添加,当添加产品详细信息时,.status还需要为该对象创建(modelNO = RX100)

现在"状态"当" product_detail"时,不会使用默认值创建在管理页面中创建。因此,当我使用以下代码更新状态数据时...显示错误

obj=production_detail.objects.get(modelNO="RX100")                              
stobj=status.objects.get(machineinfo=obj)

显示错误

  

logs.models.DoesNotExist:状态匹配查询不存在

如何创建"状态" " product_detail"在管理页面中创建

admin.py

`class status_admin(admin.ModelAdmin):
     model=status
     list_display=("machineinfo","state")

 class product_admin(admin.ModelAdmin):
      model=production_detail
      list_display=('modelNO','channels')

1 个答案:

答案 0 :(得分:1)

您可以使用Signals

from django.db.models.signals import post_save
#if a new object of product_detail is created then a new status should be created automatically
@receiver(post_save, sender=production_detail)
def create_status(sender, instance, created, *args, **kwargs):
    if created:
          obj = status(machineinfo=instance)
          obj.save()