0
所以我有什么形式添加新对象的模型销售什么,从模型的好,计数(计数字段在模型好)id对象。编辑模型对象我形成?
我需要什么。当我在模型销售(ID和计数)中创建新对象时,更改模型中的计数好与模型销售ID。 so: 商品对象 - {id = 10 count = 5,id = 11,count = 3} 创建促销 - {d = 10 count = 3,id = 11,count = 2} 保存促销 更新好的对象{ID = 10计数= 2(5-3),ID = 11计数= 1(3-2)}从模型 更新产品良好 希望大家理解 视图
@login_required
def index(request):
if request.user.role == '2':
shop = Shop.objects.get(owner=request.user.parent)
goods = Good.objects.filter(shop=shop)
if request.method == 'POST':
form = SaleForm(request.POST)
form.fields['good'].queryset = goods
if form.is_valid():
new_form = form.save(commit=False)
new_form.seller = request.user
new_form.save()
else:
form = SaleForm()
form.fields['good'].queryset = goods
return render(request, 'base_vendor.html', {'context': goods, 'form': form })
形式
from django import forms
from core.models import Sale
class SaleForm(forms.ModelForm):
class Meta:
model = Sale
fields = ('good', 'count')
模板
<form method="POST" action="{%url 'vendor'%}">
{% csrf_token %}
{{form.as_p}}
<button type="submit">OK</button>
</form>
UPD
销售模式
class Sale(models.Model):
"""
Модель для проданих товарів
"""
good = models.ForeignKey(Good)
seller = models.ForeignKey(User)
time_selling = models.DateField(auto_now_add=True, editable=False)
count = models.PositiveSmallIntegerField(default=1)
class Meta:
verbose_name = 'Дані продажу'
verbose_name_plural = 'Таблиця продажів'
好的模型
class Good(models.Model):
"""
Модель товарів
"""
# Налагтувати завантаження зобреження в окрему папку для кожного магазину
article = models.CharField('Артикул товару', max_length=100)
name = models.CharField('Назва товару', max_length=100)
shop = models.ForeignKey(Shop)
category = models.ForeignKey(Category, default=1)
image = models.ImageField(upload_to='media',blank=True)
price = models.DecimalField('Ціна', max_digits=10, decimal_places=2)
description = models.TextField('Описання товару', max_length=700, default='')
sale_price = models.DecimalField('Ціна розпродажу', max_digits=10, decimal_places=2, default=0)
producer = models.CharField('Виробник', max_length=100)
count = models.PositiveSmallIntegerField(default=1)
size = models.CharField(max_length=10, blank=True)
def __str__(self):
return self.name
class Meta:
verbose_name = 'товар'
verbose_name_plural = 'Товари'
好形式
class GoodForm(forms.ModelForm):
article = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control1'}))
name = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control1'}))
description = forms.CharField(widget=forms.Textarea(attrs={'class': 'form-control1', 'rows': '30'}))
price = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control1'}))
sale_price = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control1'}))
producer = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control1'}))
count = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control1'}))
size = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control1'}))
image = forms.ImageField()
class Meta:
model = Good
fields = ('article', 'name', 'category', 'image', 'price', 'description', 'sale_price',
'producer', 'count', 'size')
添加良好的看法。
@login_required
def add_good(request):
if request.user.role == '1':
try:
have_shop = Shop.objects.get(owner=request.user.pk)
if have_shop:
if request.method == 'POST':
form = GoodForm(request.POST, request.FILES)
if form.is_valid():
new_form = form.save(commit=False)
new_form.shop = Shop.objects.get(owner=request.user.pk)
new_form.save()
return HttpResponseRedirect('/dashboard/')
else:
form = GoodForm()
shop = Shop.objects.get(owner=request.user.pk)
categories = Category.objects.filter(parent=shop.category.pk)
form.fields['category'].queryset = categories
return render(request, 'add_good.html', {'form': form})
except:
return HttpResponseRedirect('/dashboard/setup_shop')
else:
return HttpResponseRedirect('/')
thx。我知道,但我不知道如何实现。我可以从form.is_valid()中获取良好的ID:(我尝试)good = Good.objects.get(pk = form.good.pk) 以及如何更新我的新对象“good” – user3170400
如果没有你,这是不可能的也张贴您的模型和形式。 –
更新问题 @emilStenström – user3170400