2017-05-26 146 views
1

我有一個名爲billing的應用程序。以下是我的應用程序中的模型。ManyToMany字段沒有得到保存Django

class ProductType(models.Model): 
    name = models.CharField(max_length=128) 
    unique_id = models.CharField(max_length=128) 
    price = models.DecimalField(max_digits=50,decimal_places=4) 

class Product(models.Model): 
    type = models.ForeignKey(ProductType,related_name="products") 
    mac_id = models.CharField(max_length=128) 
    product_unique_id = models.CharField(max_length=128) 
    assigned = models.BooleanField(default=False) 

class BillRecord(models.Model): 
    products = models.ManyToManyField(Product, related_name="billrecords",blank=True) 
    send_sms = models.BooleanField(default=True) 
    send_email = models.BooleanField(default=True) 
    invoice = models.FileField(null=True,blank=True,upload_to='invoices/') 

    def save(self, *args, **kwargs): 
     super(BillRecord, self).save(*args, **kwargs) 
     total_products = Product.objects.filter(assigned=False) 
     self.products.add(*total_products) 

保存BillRecord對象和查詢對象的products返回後我billing.Product.None

如何我在BillRecord模型的保存方法添加products

+0

你能告訴你如何保存這個嗎?因爲上面的代碼正在工作... –

+1

我從django管理端添加BillRecord對象 – albinantony143

+0

我回答...請檢查... –

回答

1

你需要改變你的保存方法,

def save(self, *args, **kwargs): 
    item = super(BillRecord, self).save(*args, **kwargs) 
    total_products = Products.objects.filter(assigned=False) 
    item.products.add(*total_products) 
    item.save() 

首先,調用父類()。保存方法,然後添加要關聯到自對象的對象。

+0

做到了這一點??? .. – zaidfazil

+0

Zahid當我跟着你的方法我得到像' 「」需要在此多對多關係可以使用之前爲字段「billrecord」設置一個值。' – albinantony143

+0

我不知道這項工作是否嘗試了它... – zaidfazil

0

保存在管理員中的許多到多數人都無法正常工作。你需要重寫管理類這樣的....

class BillRecordAdmin(admin.ModelAdmin): 

    def save_model(self, request, obj, form, change): 
     super(ArticleAdmin, self).save_model(request, obj, form, change) 
     total_products = Product.objects.filter(assigned=False) 
     form.instance.products.add(*total_products) 


admin.site.register(BillRecord, BillRecordAdmin) 
0

您正在嘗試多到許多領域對象添加到billrecord對象,這就是爲什麼你越來越錯誤,「

"<BillRecord: test>" needs to have a value for field "billrecord" before this many-to-many relationship can be used" 

首先,您需要保存BillRecord模型的對象,然後將對象的queryset添加到多對多關係中。