Ich versuche zu retten bin die Daten aus Ansichten zu speichern, Meine beiden Modelle sind:derzeit keine Fremdschlüssel Objekt in die model.cc
models.py
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
i ein Formular für das geschaffen haben Produkt:
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']
in meinem views.py ich versuche, den Fremdschlüssel Objekt in die Datenbank zu speichern, aber ich bin immer einen Fehler „Can not assign‚‚Sabaree‘‘:‚Product.customer‘muss sein ein "C ustomer "Instanz".
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)
und meine Vorlage ist: 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 %}
Ich bin nicht sicher, wie die Daten zu speichern, die als Fremdschlüssel in Product-Tabelle zugeordnet ist.
ich die Methode versucht folgt verwenden Sie erwähnt, aber anstelle des Namens bekomme ich die ID des Datensatzes, da das Formular sendet, die ID des Kundennamens im POST und dessen Speicherung in der Datenbank. 'cust = request.POST.get ('customer_name') cust_obj = Customer.objects.get (id = cust) a = Produkt (support = support1, amc_date = amc_date1, amc_product = amc_product1, warranty_date = warranty_date1, warranty_product_list = warranty_product_list1, product_name = produktname1, serial_number = serial_number1, customer = cust_obj) a.save() ' danke, dass Sie mir ein paar Anweisungen gegeben haben. – itsecurity