【发布时间】:2021-09-17 16:23:55
【问题描述】:
我想在我的models.py 和forms.py 中有一个字段,以便可以选择上传照片或文字,或同时上传两者。目前,我使用所见即所得的编辑器来做到这一点。我将如何修改我的模型以便我可以拥有该选项?到目前为止,这是我的代码:
models.py
class Problem(models.Model):
slug = models.SlugField(null = False, unique = True, max_length = 255)
topic = models.ForeignKey(Topic, on_delete = models.CASCADE)
free = models.CharField(max_length = 1, choices = Free)
#problem when introducing UUID field
traceID = models.UUIDField(default=uuid.uuid4, editable = True)
#use meta tags to optimize SEO
metaTags = models.TextField(default = "")
questionToProblem = models.TextField()
#migration with CKEDitor is 0023_alter_problem_solutiontoproblem.py
solutionToProblem = RichTextUploadingField(blank = True, null = True)
solutiontoProblem 字段是我拥有文本编辑器的地方 - 我希望拥有该字段,以便它同时接受文本和图像。同样,这是我的forms.py:
forms.py
class ProblemForm(forms.ModelForm):
slug = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'link'}))
topic = forms.ModelChoiceField(label = "Topic", queryset = Topic.objects.all())
metaTags = forms.CharField(label = "Meta Tags", widget=forms.Textarea(attrs={"rows" : 15, "cols" : 90}))
questionToProblem = forms.CharField(label = "Question", widget = QuestionFormWithPreview(attrs={'id' : 'mathInputForQuestion', 'cols': 90, 'rows': 15, 'onkeyup':'PreviewQuestion.Update()'}))
solutionToProblem = forms.CharField(widget = CKEditorUploadingWidget(), label = "Solution")
class Meta:
model = Problem
fields = ('metaTags', 'questionToProblem', 'solutionToProblem')
我如何获得它以便模型和表单中的字段都可以接受图像文件或文本,或两者兼而有之?
【问题讨论】:
-
我认为
RichTextUploadingField支持通过将图像粘贴到文本中来上传图像。您还在寻找其他东西吗? -
我正在尝试寻找不依赖库的自定义解决方案
-
那么您可能只有
models.TextField用于文本和models.ImageField用于图片。 IE。两个领域。还好吗? -
我是这么想的,但是有没有可能做到只有一个字段呢?
-
即使是 - 在一个字段中保留不同类型的数据也不是很好。查看我的答案以了解更多想法
标签: django django-models file-upload django-forms