【问题标题】:Returning a list with python magic methods in django models.py在 django models.py 中返回带有 python 魔术方法的列表
【发布时间】:2020-01-25 01:00:43
【问题描述】:

我需要在通过 ForeignKey 链接到另一个 models.py(导师)的 models.py(主题应用程序)中选择多个项目。在主题 var 中选择多个项目后尝试将项目添加到数据库时出现错误:“str 需要一个字符串,但得到一个列表”。如何在我的 models.py 中使用 python 魔术方法或其他方法返回选择列表并将其添加到数据库中?

见下面我的models.py:

from django.db import models
from multiselectfield import MultiSelectField

# Create your models here.
class Subject(models.Model):
    TOPICS = (
        ('SAT', 'SAT'),
        ('ACT', 'ACT'),
        ('GED', 'GED'),
        ('GRE', 'GRE'),
        ('READING', 'READING'),
        ('WRITING', 'WRITING'),
        ('ESL/ESOL', 'ESL/ESOL'),
        ('ALGEBRA', 'ALGEBRA'),
        ('CALCULUS', 'CALCULUS'),
        ('TRIG', 'TRIG'),
        ('GEOMETRY', 'GEOMETRY'),
        ('CHEMISTRY', 'CHEMISTRY'),
        ('PHYSICS', 'PHYSICS'),
        ('BIOLOGY', 'BIOLOGY'),
        ('CODING', 'CODING'),
        ('STATISTICS', 'STATISTICS'),
        ('FRENCH', 'FRENCH'),
        ('SPED', 'SPED'),
    )

    topics = MultiSelectField(choices = TOPICS,blank=True)
    level = models.IntegerField(default=1)

    def __str__(self):
        return self.topics

感谢您的协助,因为我已经不知所措了。没有运气在网上做了很多研究

【问题讨论】:

    标签: python django postgresql


    【解决方案1】:

    self.topics 是一个列表,用于字符串表示 您可以将列表项连接成字符串

        def __str__(self):
            return ','.join(self.topics)
    

    【讨论】:

    • 这让我可以解决这个问题。但是,一旦我从主题列表中选择多个项目并分配给导师,这些项目就会作为一个组而不是单个主题保存在数据库中。因此,无法搜索主题以返回指定的导师。我必须搜索或过滤不符合逻辑的确切项目组。我希望能够搜索一个主题并报告所有可能分配了该主题的导师。感谢您在这方面提供进一步协助。
    【解决方案2】:

    通过查看您的模型,您似乎可以改用多对多关系。见the official django documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-29
      • 2010-11-08
      • 2015-08-08
      相关资源
      最近更新 更多