2017-09-15 67 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