У меня довольно неприятная проблема с Django 1.7 и Django-Tables2 (0.15.0).
Моя модель:
class Xuser(TimeStampedModel):
number = models.CharField(max_length=6, primary_key=True)
moniker = models.CharField(max_length=32)
first_name = models.CharField(max_length=32)
last_name = models.CharField(max_length=32)
full_name = models.CharField(max_length=128)
department = models.CharField(max_length=32)
citizenship = models.CharField(max_length=32)
location = models.CharField(max_length=32)
employee_type = models.CharField(max_length=32)
title = models.CharField(max_length=128, blank=True)
mail = models.EmailField(max_length=32)
open_account_authorized = models.BooleanField(choices=YES_NO, default=None)
open_account_enabled = models.BooleanField(choices=YES_NO, default=None)
root_authorized = models.BooleanField(choices=YES_NO, default=None)
Из форм.py:
class AdminXuserTable(tables.Table):
number = tables.LinkColumn('accountadmindetail', args=[tables.A('number')])
class Meta:
model = Xuser
attrs = {"class": "adminsearchresults"}
fields = ('number', 'first_name', 'last_name', 'open_account_authorized', 'open_account_enabled',
'root_authorized', )
Из представлений.py:
def accountadmin(request):
if request.method == "POST":
try:
searchtype = request.POST.get('search')
value = request.POST.get('value')
xusers = Xuser.objects.all()
if searchtype == 'number':
results = xusers.filter(number__startswith=value)
elif searchtype == 'group':
results = xusers.filter(department__contains=value)
elif searchtype == 'first':
results = xusers.filter(first_name__contains=value)
elif searchtype == 'last':
results = xusers.filter(last_name__contains=value)
elif searchtype == 'moniker':
results = xusers.filter(moniker__contains=value)
else:
messages.error(request, ERRMSG_NO_POST)
results = None
if results:
resultstable = AdminXuserTable(results)
else:
resultstable = None
except IndexError:
messages.error(request, ERRMSG_NO_POST)
return HttpResponseRedirect(reverse('error'))
else:
resultstable = None
return render_to_response('includes/accountadmin.html',
{"resultstable": resultstable, },
context_instance=RequestContext(request))
Проблема, с которой я сталкиваюсь, заключается в том, что независимо от того, возвращает ли поиск 1 результат или дюжину в таблице, все логические значения отображаются как True (галочка), независимо от того, что они находятся в базе данных.
Я не знаю, актуально ли это, но мой проект начинался как Django 1.6, и я довольно поздно перенес его на Django 1.7. Все работает нормально, кроме этого. Логические значения хранятся в моей базе данных как «t» или «f». Любые идеи?