यहाँ मेरी models.py है:लेखन त्रुटि: पूर्णांक() तर्क एक स्ट्रिंग या एक नंबर, होना चाहिए न कि 'मॉडल उदाहरण'
from django.db import models
class Location(models.Model):
location_name = models.CharField(max_length=100)
def __unicode__(self):
return self.location_name
class Menu(models.Model):
location = models.ManyToManyField(Location)
restaurant_name = models.CharField(max_length=200)
dish_category = models.CharField(max_length=100)
dish_name = models.CharField(max_length=200)
VNV_tag = models.CharField(max_length=100)
quantity = models.CharField(max_length=10, default='FULL')
price = models.CharField(max_length=5, default=0)
def __unicode__(self):
return self.restaurant_name
मैं xlrd
का उपयोग कर excel फ़ाइल से मेरे डेटाबेस को भरने के लिए कोशिश कर रहा हूँ पायथन मॉड्यूल।
import os
import xlrd
from menusearch.models import Menu, Location
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'midnitepro.settings')
import django
django.setup()
def populate():
book = xlrd.open_workbook('/Users/Sahil/Desktop/MNFP1.xlsx')
sheet = book.sheet_by_index(0)
count1 = 0
while count1<sheet.nrows:
value_list = []
count2 = 0
while count2<sheet.ncols:
value_list.append(sheet.row_values(count1, start_colx=count2, end_colx=count2+1))
count2 +=1
add_menuitem(value_list)
count1 += 1
def add_menuitem(value_list):
split_query = []
m = Menu.objects.create()
value_list = [str(x[0]).encode('utf-8') for x in value_list if x]
m.restaurant_name = (value_list[0])
m.dish_category = (value_list[1])
m.dish_name = (value_list[2])
m.VNV_tag = (value_list[3])
m.quantity = (value_list[4])
m.price = (value_list[5])
# m.location.add(int(value_list[6]))
split_query = (value_list[6]).split(",")
for sq in split_query:
l = Location.objects.get_or_create(location_name=sq)
try:
m.location.add(l)
except ValueError:
print "Problem Adding Location to Menu."
m.save()
if __name__ == '__main__':
print "Starting population script..."
from menusearch.models import Menu, Location
populate()
अब जब मैं populate_db.py स्क्रिप्ट चलाने, टर्मिनल पर उत्पादन में लिखा है: "समस्या मेनू स्थान जोड़ना।" यहाँ मेरी populate_db.py स्क्रिप्ट है। मुझे लगता है कि समस्या populate_db लिपि में यहां मौजूद है: m.location.add (एल) लेकिन इस क्वेरीसमूह वाक्य रचना यहाँ दी गई साथ कतार में है: https://docs.djangoproject.com/en/1.8/topics/db/examples/many_to_many/
निकालने का प्रयास करें/सिवाय के बाद, मेरे ट्रैस बैक पढ़ता :
TypeError: int() argument must be a string or a number, not 'Location'
कृपया बताएं कि यहां क्या हो रहा है। और एक क्वेरीसेट के माध्यम से कईToManyField पर उचित रूप से कोई मान कैसे जोड़ें।
संभावित डुप्लिकेट: Django Error: TypeError: int() argument must be a string or a number, not 'BuildsTable' लेकिन मैं अभी भी अपने मामले में जवाब जानना चाहूंगा क्योंकि मैं कईToManyField का उपयोग कर रहा हूं।
पूर्ण ट्रैस बैक:
l= (<Location: Indiranagar>, False)
Inside Loop - sq= Indiranagar
Traceback (most recent call last):
File "populate_db.py", line 62, in <module>
populate()
File "populate_db.py", line 23, in populate
add_menuitem(value_list)
File "populate_db.py", line 50, in add_menuitem
m.location.add(l)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/fields/related.py", line 973, in add
self._add_items(self.source_field_name, self.target_field_name, *objs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/fields/related.py", line 1079, in _add_items
'%s__in' % target_field_name: new_ids,
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/query.py", line 679, in filter
return self._filter_or_exclude(False, *args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/query.py", line 697, in _filter_or_exclude
clone.query.add_q(Q(*args, **kwargs))
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1304, in add_q
clause, require_inner = self._add_q(where_part, self.used_aliases)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1332, in _add_q
allow_joins=allow_joins, split_subq=split_subq,
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1194, in build_filter
lookups, value)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/fields/related.py", line 1745, in get_lookup_constraint
root_constraint.add(lookup_class(targets[0].get_col(alias, sources[0]), value), AND)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/lookups.py", line 96, in __init__
self.rhs = self.get_prep_lookup()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/lookups.py", line 134, in get_prep_lookup
return self.lhs.output_field.get_prep_lookup(self.lookup_name, self.rhs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 729, in get_prep_lookup
return [self.get_prep_value(v) for v in value]
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 985, in get_prep_value
return int(value)
TypeError: int() argument must be a string or a number, not 'Location'.
कृपया पूरा ट्रेसबैक दिखाएं। यदि आपने कोशिश को छोड़कर/यहां छोड़ दिया है, तो मुझे टुपल के बारे में त्रुटि दिखाई देगी, क्योंकि 'get_or_create' रिटर्न' (उदाहरण, बनाया गया) '। –
हां पूरी तरह से अपडेट किया गया। – vanguard69
** एल = (<स्थान: इंदिरानगर>, झूठा) ** यह * get_or_create * – vanguard69