带外键的Django访问信息模型
Django access information model with foreign key
我的models.py
class Information(models.Model):
id = models.CharField(max_length=200, primary_key=True)
title = models.CharField(max_length=500)
link = models.CharField(max_length=100)
summary = models.CharField(max_length=1000)
published = models.CharField(max_length = 100)
def __str__(self):
return self.title
class Search(models.Model):
id = models.CharField(max_length=100, primary_key=True)
searched_titles = models.CharField(max_length=100)
searched_topics = models.CharField(max_length=100)
number_found_articles = models.IntegerField()
def __str__(self):
return self.id
class Article_search(models.Model):
found_articles = models.ForeignKey(
Information, on_delete=models.CASCADE, default=None, primary_key=True)
search_details = models.ForeignKey(
Search, on_delete=models.CASCADE)
我的views.py
def show_articles_with_this_filter_id(request):
alles = Article_search.objects.all()
print(alles)
我得到的错误:(1054, "1054 (42S22): 'field list' 中的未知列 'database_article_search.found_articles_id'", '42S22')
如果我让我的 models.py Article_search class 像这样:
class Article_search(models.Model):
found_articles = models.ForeignKey(
Information, on_delete=models.CASCADE, default=None)
search_details = models.ForeignKey(
Search, on_delete=models.CASCADE)
我收到此错误:(1054, "1054 (42S22): Unknown column 'database_article_search.id' in 'field list'", '42S22')
我知道每个模型都需要一个主键,但我不明白为什么都报错。请有人帮我访问这个模型的数据
根据建议,我将 models.py 文件设为:
class Information(models.Model):
id = models.CharField(max_length=200, primary_key=True)
title = models.CharField(max_length=500)
link = models.CharField(max_length=100)
summary = models.CharField(max_length=1000)
published = models.CharField(max_length = 100)
def __str__(self):
return self.title
class Search(models.Model):
id = models.CharField(max_length=100, primary_key=True)
searched_titles = models.CharField(max_length=100)
searched_topics = models.CharField(max_length=100)
number_found_articles = models.IntegerField()
def __str__(self):
return self.id
class Article_search(models.Model):
found_articles = models.OneToOneField(
Information,
on_delete=models.CASCADE,
primary_key=True,)
search_details = models.OneToOneField(
Search, on_delete=models.CASCADE)
当我尝试使用 views.py 从 Article_search table 获取所有信息时,我收到错误消息:(1054, "1054 (42S22): Unknown column 'database_article_search.found_articles_id' 在 'field list'", '42S22')
外键永远不能成为其他模型的主键,要实现这一点,您必须使用 OneToOne 字段而不是外键。
我的models.py
class Information(models.Model):
id = models.CharField(max_length=200, primary_key=True)
title = models.CharField(max_length=500)
link = models.CharField(max_length=100)
summary = models.CharField(max_length=1000)
published = models.CharField(max_length = 100)
def __str__(self):
return self.title
class Search(models.Model):
id = models.CharField(max_length=100, primary_key=True)
searched_titles = models.CharField(max_length=100)
searched_topics = models.CharField(max_length=100)
number_found_articles = models.IntegerField()
def __str__(self):
return self.id
class Article_search(models.Model):
found_articles = models.ForeignKey(
Information, on_delete=models.CASCADE, default=None, primary_key=True)
search_details = models.ForeignKey(
Search, on_delete=models.CASCADE)
我的views.py
def show_articles_with_this_filter_id(request):
alles = Article_search.objects.all()
print(alles)
我得到的错误:(1054, "1054 (42S22): 'field list' 中的未知列 'database_article_search.found_articles_id'", '42S22')
如果我让我的 models.py Article_search class 像这样:
class Article_search(models.Model):
found_articles = models.ForeignKey(
Information, on_delete=models.CASCADE, default=None)
search_details = models.ForeignKey(
Search, on_delete=models.CASCADE)
我收到此错误:(1054, "1054 (42S22): Unknown column 'database_article_search.id' in 'field list'", '42S22')
我知道每个模型都需要一个主键,但我不明白为什么都报错。请有人帮我访问这个模型的数据
根据建议,我将 models.py 文件设为:
class Information(models.Model):
id = models.CharField(max_length=200, primary_key=True)
title = models.CharField(max_length=500)
link = models.CharField(max_length=100)
summary = models.CharField(max_length=1000)
published = models.CharField(max_length = 100)
def __str__(self):
return self.title
class Search(models.Model):
id = models.CharField(max_length=100, primary_key=True)
searched_titles = models.CharField(max_length=100)
searched_topics = models.CharField(max_length=100)
number_found_articles = models.IntegerField()
def __str__(self):
return self.id
class Article_search(models.Model):
found_articles = models.OneToOneField(
Information,
on_delete=models.CASCADE,
primary_key=True,)
search_details = models.OneToOneField(
Search, on_delete=models.CASCADE)
当我尝试使用 views.py 从 Article_search table 获取所有信息时,我收到错误消息:(1054, "1054 (42S22): Unknown column 'database_article_search.found_articles_id' 在 'field list'", '42S22')
外键永远不能成为其他模型的主键,要实现这一点,您必须使用 OneToOne 字段而不是外键。