0
Ich entwickle django Web Service mit Python3.5 und Django1.9.Wenn Geschäftsdaten einschließlich Fremdschlüssel enthalten sind, treten Fehler in Django auf?
Ich definiere Modelle wie belows:
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
Und wenn ich versuche, so etwas wie belows zu tun,
url_category = URLCategory("http://example.org")
post = Post(title="Title", created_date="06/29/2016", site=url_category)
post.save()
Es Fehler tritt auf, bei 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
Ich suche nach gleichen Problemen mit dem Stichwort invalid literal for int() with base 10
in stackoverflow
, bu t kann dieses Problem nicht lösen.
Brauchen Sie Hilfe, danke.
Ehrfürchtig Lösung sein sollte, es funktioniert! Vielen Dank. By the way, wenn ich versuche, mehrere Beiträge mit for-Schleife zu erstellen, die alle URL ist "http://example.org", doppelte URL erscheint im Abschnitt Kategorie auf der Admin-Seite. Ich möchte es nur einmal für die gleiche URL-Kategorie erscheinen lassen, irgendwelche Ideen? – user3595632
ja ... mit 'get_or_create (url =" example.com ")' wird nur eine erstellt –