我正在创建一个需要评论系统的应用程序。我决定使用 Django 的评论应用程序,但需要对其进行一些改动。首先,我不希望用户的电子邮件 ID 是强制性的,接下来我需要一个选项来附加带有评论的文件。
因此我决定从 BaseCommentAbstractModel 继承。现在我需要将 user_email 覆盖为
user_email= models.EmailField(max_length=100, blank=True)
并添加另一个字段
file = models.FileField(upload_to='data/files')
我的代码应该是这样的:
from django.db import models
from django.contrib.comments.models import BaseCommentAbstractModel
class CommentWithFile(BaseCommentAbstractModel):
'''This is a hack of the Comment model to remove email and add a filefield'''
user_email = models.EmailField(max_length=100, blank=True)
file = models.FileField(upload_to='data/files')
但这行不通。 user_email 仍然是强制性的。有什么想法吗?
最佳答案
您确定问题与模型有关吗? BaseCommentAbstractModel
甚至没有定义 user_email
,它只在主要的 Comment
模型中定义 - 它被定义为 blank=True
无论如何。
我认为您更有可能需要提供自定义表单。主要的 CommentDetailsForm
不是模型表单 - 它手动定义其字段,包括必需的 email
字段。听起来你也需要覆盖它。
关于python - 从基抽象类 Django 的子类中删除字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4847949/