Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
420 views
in Technique[技术] by (71.8m points)

python 3.x - Updating two models with a foreign key at the same time

Below are my codes and I get the error ValueError at /inventory/stock/1/edit Cannot assign "'1'": "Stock.category" must be a "Category" instance.

in model.py

class Category(models.Model):
name = models.CharField(max_length=100, blank=True, null=True)
def __str__(self):
    return self.name

class Stock(models.Model):
   category = models.ForeignKey(Category, on_delete=models.CASCADE,blank=True)
   item_name = models.CharField(max_length=100, blank=True, null=True)
   quantity = models.IntegerField(default='0',blank=True, null=True)

class StockHistory(models.Model):
   category = CharField(max_length=100, blank=True, null=True)
   item_name = models.CharField(max_length=100, blank=True, null=True)
   quantity = models.IntegerField(default='0',blank=True, null=True)

in view.py

def UpdateStock(request, pk):
    stock = Stock.objects.get(id=pk)
    stock_form = StockForm(instance = stock)
    history_form = StockHistoryForm(instance = stock)
    if request.method == 'POST':
        stock_form = StockForm(request.POST, instance = stock)
        history_form = StockHistoryForm(request.POST, instance = stock)
        if stock_form.is_valid() and history_form.is_valid():
            stock = stock_form.save()
            history = history_form.save()
            return redirect('inventory')

    context = {
         'stock_form': stock_form,
          'history_form': history_form
     }

     return render(request, 'inventory/edit.html', context)
        

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
等待大神答复

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...