Je veux traiter les plaques avec django. Pour cela, j'ai besoin d'utiliser Choicefield et FilePathField.Comment combiner le champ de choix django avec filepathfield
Je ne sais pas vraiment comment les combiner. Le champ de choix sous la forme fonctionne comme prévu
class TaskBlockForm(forms.ModelForm):
""" form used for creating a taskblock
:param forms.ModelForm: superclass of forms.
"""
users = forms.ModelMultipleChoiceField(queryset=DemoUser.objects.all())
upload_by_file = forms.BooleanField()
file = forms.FileField(label=_('Init script'), required=False)
template = forms.ChoiceField(widget=forms.Select(), choices=[(0, 'WorldDB'), (1, 'ArticleDB'), (2, 'SampleDB')])
date = forms.DateField(widget=SelectDateWidget(), label=_('maturity date'), initial=timezone.now())
Le modèle ressemble
def generate_templatename(instance, filename):
"""
helper method to generate path and filename for a template sql file of a taskblock
:param instance: taskblock instance
:param filename: filename
:return: relative url of file path
"""
url = "template/%s/%s" % (instance.name, filename)
return url
class TaskBlock(models.Model):
"""
model of a taskblock
"""
name = models.CharField(max_length=20)
description = models.TextField()
create_stamp = models.DateTimeField(default=timezone.now)
file = models.FileField(upload_to=generate_filename, blank=True)
template = models.FilePathField(path=generate_templatename, default='DEFAULT')
def __str__(self):
return self.name
(le paramètre de l'URL du fichier doit être juste - je suis en utilisant la même approche pour stocker des fichiers dans le répertoire/répertoire media/documents)
Comment puis-je combiner les deux, pour que je puisse choisir le modèle directement? ou dois-je le configurer manuellement dans view.py plus tard?