我正在用Django写一个博客应用程序。在models.py中,我有两个类:Post和LanguageCategory。在语言类别中,我会预先定义哪些语言是适用的,比如英语、意大利语,这可以由超级用户在管理员登录中创建。但是,在Post类中,我希望使用LanguageCategory类作为名为languages的属性,如下所示(models.py的代码):
from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone
# Create your models here.
# https://stackoverflow.com/questions/29536180/django-blog-adding-published-date-field-to-new-posts-and-ability-to-login-as-non
class Post(models.Model):
title = models.CharField(max_length=300)
keywords = models.CharField(max_length=300, default="some keywords here")
author = models.ForeignKey(User, on_delete=models.CASCADE)
created_date = models.DateTimeField(
default=timezone.now)
published_date = models.DateTimeField(auto_now_add=True,
blank=False, null=False)
language = LanguageCategory()
image = models.ImageField(upload_to='blog_images/', default='blog_images/myimage.png')
body = models.TextField()
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title + ' | ' + str(self.author)
class LanguageCategory(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
当我尝试进行迁移时,出现以下错误:
line 15, in Post language = LanguageCategory() NameError: name 'LanguageCategory' is not defined
如何解决此问题,以及如何在文章中使用LanguageCategory,以便博客文章具有选择语言的字段
你可以用外键。而不是直接引用,你可以引用它如下
完整代码如下:
参考:
https://docs.djangoproject.com/en/3.1/ref/models/fields/#lazy-relationships
相关问题 更多 >
编程相关推荐