Django / Model with ManytoManyField 默认给出 en entry

Django / Model with ManytoManyField gives en entry by default

Models.py

class Scenes(models.Model):
    name = models.SlugField('Scene name', max_length=60,unique=True)
    description = models.TextField(blank=True)
    fileGltf = models.FileField(null=TRUE, blank=False, upload_to="3dfiles/")
    
    record_date = models.DateTimeField('Scene date')

    manager = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        blank=True,
        null=True,
        on_delete=models.SET_NULL)
  
    prev = models.ForeignKey(
        'self', 
        related_name='previous',
        blank=True,
        null=True,
        on_delete=models.SET_NULL)

    next = models.ManyToManyField(
        'self',
         blank=True, )

Views.py(摘录)

    if form.is_valid():
        nextSceneSlug=form.cleaned_data.get('name')
        scenes=form.save(commit=False)
        scenes.manager = request.user
        scenes.record_date = now
        scenes.prev = ScenePrevious
        form.save()

当我使用 models.py 记录新条目时,下一个字段有一个默认值/ (世界是场景起源)但是当我用管理面板添加它时,没有。 我怎样才能在我的 views.py 中做到这一点,让它留下一个空白字段?

如果A是[=26的prev,那么指定prevnext是没有意义的=]B,则BAnext的成员。您可以定义一个简单的 ForeignKey:

class Scene(models.Model):
    name = models.SlugField('Scene name', max_length=60, unique=True)
    description = models.TextField(blank=True)
    file_gltf = models.FileField(null=TRUE, upload_to='3dfiles/')
    record_date = models.DateTimeField('Scene date')
    manager = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        blank=True,
        null=True,
        on_delete=models.SET_NULL
    )
    previous = models.ForeignKey(
        'self', 
        <strong>related_name='next'</strong>,
        blank=True,
        null=True,
        on_delete=models.SET_NULL
    )

如果你有例如场景 BC 两者都有 A 作为previous,然后A.next.all()将return一个包含BCQuerySet


Note: normally a Django model is given a singular name, so Scene instead of Scenes.