python - 从基抽象类 Django 的子类中删除字段

标签 python django base-class

我正在创建一个需要评论系统的应用程序。我决定使用 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/

相关文章:

python - 如何使用字符串定义函数名

Python - 为什么不总是缓存所有不可变对象(immutable对象)?

python - 在波兰语中用月份名称格式化日期,在 python 中

C++模板鸭子类型与纯虚拟基类继承

java - 如何避免Java中脆弱的基类

python - 将列表转换为字符串

python - Cython:缓冲区数据类型不匹配,预期为 'int',但得到了 Python 对象

python - Django 断言失败 : assertInHTML ('hello' , '<html>hello</html>' )

django - 同时使用多个缓存后端

c# - 如何对派生自基类的类隐藏作为基类中接口(interface)实现的一部分的方法?