0

I have want gather just fieldname type is datetime by

_meta.get_fields() 

Model.py :

class testmodel (models.Model):
    name = models.CharField(max_length=200)
    field = models.CharField('field', max_length=50, choices=(), default=None)
    create_time = models.DateTimeField(null=True,blank=True)
    complete_time = models.DateTimeField(null=True,blank=True)

admin.py :

all_fields = [f.name for f in testmodel._meta.fields]

class myform(forms.ModelForm):
field = forms.ChoiceField(choices=all_fields)
name = forms.TextInput()

class MyModelAdmin(admin.ModelAdmin):
   fields = ('name', 'field',)
   list_display = ('name', 'field',)
   form = myform

admin.site.register(testmodel,MyModelAdmin)

what is solution for this ?

  • I can see only two fields using the `DateTimeField`. Is that hard to define it yourself? – JPG Sep 09 '20 at 05:57
  • it will be dynamic, May user defined many model by themselves, this is choice filed filled scan all models and find datetime field in each model for set Rule calculation based on datetimefield and operator from User ( SLA Calculation in Workflows ) – MohammadReza moeini Sep 09 '20 at 05:59

1 Answers1

1

Use list comprehension as

from django.db.models import DateTimeField

datetime_model_fields = [field for field in MyModelClass._meta.get_fields() if isinstance(field, DateTimeField)]
JPG
  • 82,442
  • 19
  • 127
  • 206