0
に外部キーオブジェクトを保存することができない、私の2つのモデルがある:私は、フォームを作成しているは、私はビューからのデータを保存しようとしていますmodel.cc
class Customer(models.Model) :
name = models.CharField(max_length=25)
address = models.CharField(max_length=250)
phone_number = models.IntegerField()
email = models.EmailField(max_length=35)
contact_person = models.CharField(max_length=25)
created_date = models.DateTimeField(auto_now_add=True, null=True)
def __str__(self):
return self.name
class Product(models.Model):
support = models.CharField(max_length=8, choices=support_choice, null=True)
amc_date = models.DateField(null=True)
amc_product = models.CharField(max_length=500, default="No Products in amc")
warranty_date = models.DateField(null=True)
warranty_product_list = models.CharField(max_length=500, default="No Products in warranty")
product_name = models.CharField(max_length=100, null=True)
serial_number = models.CharField(max_length=50, null=True)
customer = models.ForeignKey(Customer)
def __str__(self):
return self.product_name
models.py製品:私のviews.pyで
class ProductForm(forms.ModelForm):
support = forms.ChoiceField(choices=support_choice, required=True,)
amc_date = forms.DateField(required=False, widget=forms.TextInput(attrs={'placeholder': 'ex: 10/25/2006'}))
amc_product = forms.CharField(required=False, widget=forms.TextInput(attrs={'placeholder': 'Products listed in AMC'}))
warranty_date = forms.DateField(required=False, widget=forms.TextInput(attrs={'placeholder': 'ex: 10/25/2006'}))
warranty_product_list = forms.CharField(required=False, widget=forms.TextInput(attrs={'placeholder': 'Products listed in warranty'}))
product_name = forms.CharField(required=True, widget=forms.TextInput(attrs={'placeholder':'Product model'}))
serial_number = forms.CharField(required=True)
class Meta:
model = Product
fields = ['support', 'amc_date', 'amc_product', 'warranty_date', 'warranty_product_list', 'product_name',
'serial_number']
私は製品データベースに外部キーオブジェクトを保存しようとしていますが、私は『Sabaree』「を割り当てることができません 『というエラーを取得しています』: 『Product.customerは』でなければなりません交流顾客 "のインスタンス。
views.py
def product_detail(request):
cust = request.POST.get('customer_name')
obj = Customer.objects.all()
obj1 = obj.filter(name=cust)
print (cust)
if request.method == 'POST':
form = ProductForm(request.POST)
if form.is_valid():
a = form.save(commit=False)
a.customer = cust
form.save()
context = {'obj':obj, 'form':form}
return render(request,"products.html",context)
と私のテンプレートです:products.html
{% block content %}
<script type="text/javascript" src="//code.jquery.com/jquery-1.12.0.min.js"></script>
<script src="{% static 'js/product_detail.js' %}"></script>
<div class="container">
<h2>Products</h2>
<form method="post" action="" enctype="multipart/form-data">
{% csrf_token %}
<div class="controls ">
<select class="select form-control" id="id_customer_name" name="customer_name">
{% for i in obj %}
<option id="{{ i.id }}" value="{{ i.name }}">{{ i.name }}{{ i.id }}</option>
{% endfor %}
</select>
</div>
{{ form|crispy }}
<input type="submit" class="btn btn-default " value="Submit">
</form>
</div>
{% endblock %}
私は製品のテーブルに外部キーとして割り当てられているデータを保存するかどうかはわかりません。
を次のようにCustomerテーブルオブジェクトに変換し、この
かのどちらかをお試しくださいPOSTでの顧客名のIDとデータベースへの保存。 'CUST = request.POST.get( 'CUSTOMER_NAME') cust_obj = Customer.objects.get(ID = CUST) =商品(支持= support1、amc_date = amc_date1、amc_product = amc_product1、warranty_date = warranty_date1、 保証の製品リスト=保証のプロダクト_リスト1、プロダクト名=プロダクト名1、シリアル番号=シリアル番号1、顧客= cust_obj) a.save() ' – itsecurity