У меня есть такая модель:
class Profile(models.Model):
user = models.OneToOneField("User", verbose_name=u"user", null=True, blank=True, default=None)
monthly_income = models.ForeignKey(MonthlyIncome, verbose_name=u"Monthly Income", null=True, blank=True, default=None)
car = models.ManyToManyField(Car, verbose_name=u"Car?", null=True, blank=True, default=None)
Если пользователь изменяет свой профиль, эти изменения сохраняются в другой таблице (UpdateLog).В связи с этим я делаю запрос из UpdateLog, и если элемент находится в Updatelog, поле выбора будет отключено.Поскольку отключенные поля выбора не отправляют никаких данных на сервер, я добавляю значение отключенного поля с request.POST.copy()
в следующем представлении:
в представлении:
if request.method == "POST":
post_values = request.POST.copy()
query = UpdateLog.objects.filter(user=request.user.id)
for a in query:
field = a.filed_name
try:
sd = eval("profile.%s.id"%field)
post_values.update({field: u"%s"%sd})
except AttributeError:
print field
Проблема заключается в следующем:sd = eval("profile.%s.id"%field)
работает только для данных ForeignKey.Я должен отделить sd
для полей Foreignkey и Manytomany.Как узнать тип полей модели в поле зрения?