2017-09-15 62 views
0

我有models.py如下:不採取值外鍵的django殼

class category(models.Model): 
    cid=models.IntegerField(unique=True,default=0) 
    cname=models.CharField(max_length=20) 

    def __unicode__(self): 
     return self.cid,self.cname 

    class Meta: 
     db_table="category" 

class cateledetails(models.Model): 
    cdid=models.IntegerField(unique=True,default=0) 
    cid=models.ForeignKey(category,to_field='cid',on_delete=models.CASCADE) 
    elename=models.CharField(max_length=20) 
    imgsrc=models.ImageField(upload_to='elements/',blank=True) 

    def __unicode__(self): 
     return self.cdid,self.elename 

    class Meta: 
     db_table="cateledetails" 

,我已在殼B =類別(CID = 1,CNAME = '動物') b條目.save()

接下來我嘗試輸入一個進入cateledetails表,並提供了以下錯誤:

蟒蛇manage.py殼

Python 2.7.8 (default, Jun 30 2014, 16:08:48) [MSC v.1500 64 bit (AMD64)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
(InteractiveConsole) 
>>> from django.models import category,cateledetails 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
ImportError: No module named models 
>>> from student.models import category,cateledetails 
>>> b=category.objects.get(pk=1) 
>>> b.cid 
1 
>>> q=cateledetails(cdid=1,cid=1,'dog') 
    File "<console>", line 1 
SyntaxError: non-keyword arg after keyword arg 
>>> q=cateledetails(cdid=1,cid=1,elename='dog') 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "C:\Python27\lib\site-packages\django\db\models\base.py", line 468, in __init__ 
    setattr(self, field.name, rel_obj) 
    File "C:\Python27\lib\site-packages\django\db\models\fields\related.py", line 627, in __set__ 
    self.field.rel.to._meta.object_name, 
ValueError: Cannot assign "1": "cateledetails.cid" must be a "category" instance. 

爲什麼會產生這個錯誤?

回答

1

您需要通過一個category實例,其中as爲您傳遞一個整數值。

解決方案

q=cateledetails(cdid = 1, cid = b, elename = 'dog') 

編號:Django Related Objects