当存储包含外键的数据时,Django会出现错误?

时间:2016-07-01 06:06:49

标签: python django model

我正在使用Python3.5和Django1.9开发django Web服务。

我定义了类似下面的模型:

from django.db import models
from django.utils import timezone

class URLCategory(models.Model):
    url = models.CharField(max_length=200, null=True)

class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField(null=True)
    site = models.ForeignKey(URLCategory, null=True) # site 라는 요소(프로퍼티)는 URLCategories 라는 클래스(모델)을 외래키로(MANY-TO-ONE) 가리킨다”이다.
    created_date = models.DateTimeField(blank=True, null=True)
    crawl_date = models.DateTimeField(blank=True, null=True)
    num_of_comments = models.PositiveSmallIntegerField(default=0, null=True)

    def save(self):
        self.crawl_date = timezone.now()
        super().save()

    def __str__(self):
        return self.title

当我尝试做类似下面的事情的时候,

url_category = URLCategory("http://example.org")
post = Post(title="Title", created_date="06/29/2016", site=url_category)
post.save()

post.save()发生错误:

self = <django.db.models.fields.AutoField: id>, value = 'http://example.org'

    def get_prep_value(self, value):
        value = super(AutoField, self).get_prep_value(value)
        if value is None:
            return None
>       return int(value)
E       ValueError: invalid literal for int() with base 10: "http://example.org"

../venv/lib/python3.5/site-packages/django/db/models/fields/__init__.py:976: ValueError

我在invalid literal for int() with base 10中使用关键字stackoverflow查找相同的问题,但无法解决此问题。

需要你的帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

应该是

url_category = URLCategory.objects.create(url="http://example.org")
post = Post(title="Title", created_date="06/29/2016", site=url_category)
post.save()