python - 如何在 Django 中从 models.py 查询数据库项?

标签 python mysql django

我有不同的型号。一个模型的Multiselctfield的选择依赖于另一个模型。因此,必须在model.py中查询数据库,同时这样做,这会导致迁移问题。 (表不存在错误)

class Invigilator(models.Model):
    ---

# this method queries Shift objects and Examroom
def get_invigilator_assignment_list ():
    assignment = []
    shifts = Shift.objects.all()
    for shift in shifts:
        rooms= ExamRoom.objects.all()
        for room in rooms:
            assign = str (shift.shiftName)+ " " +str (room.name) 
            assignment.append (assign)
    return assignment
assignment_choice = []
assign = get_invigilator_assignment_list()
i = 0
for assignm in assign:
    datatuple = (i,assignm)
    assignment_choice.append(datatuple) 
    i= i+1
ASSIGNMENT_CHOICE = tuple(assignment_choice) 

assignment =MultiSelectField (choices = ASSIGNMENT_CHOICE, blank = True, verbose_name="Assignments")

最佳答案

您无法添加动态选择,因为它们都存储在迁移文件和表信息中。如果 Django 允许你这样做,这意味着每次有人向这两个模型添加一条记录时,都应该创建一个新的迁移并更改数据库。您必须以不同的方式解决这个问题。

据我所知 django-smart-selects 有一个 ChainedManyToMany 字段可以做到这一点。

这是存储库中的示例。

from smart_selects.db_fields import ChainedManyToManyField

class Publication(models.Model):
    name = models.CharField(max_length=255)

class Writer(models.Model):
    name = models.CharField(max_length=255)
    publications = models.ManyToManyField('Publication', blank=True, null=True)

class Book(models.Model):
    publication = models.ForeignKey(Publication)
    writer = ChainedManyToManyField(
        Writer,
        chained_field="publication",
        chained_model_field="publications")
    name = models.CharField(max_length=255)

关于python - 如何在 Django 中从 models.py 查询数据库项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54149411/

相关文章:

python - PyYAML 转储格式

python - 从字符串中修剪特定的前导字符和尾随字符

MYSQL错误 'unknown column in having clause'

python - Pytorch:反向池化和复制填充的类似过程?

python - 在 Python 中按索引删除列表中的多个元素

mysql - 我想默认获取最后一行 mysql 查询

mysql - 如何返回模型质量分配的默认列值?

python - 带有 MySQL 测试的 Django 示例 .travis

python - Django 上传图像 - 从表单到 Rackspace/S3,无需任何操作

python - Django 模板 : How to determine which object/model a queryset is composed of?