﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
24198	Options.get_field behavior change	Xavier Ordoquy	nobody	"Up to Django 1.7 included `Options.get_field` would return a `FieldDoesNotExist` when requested a `GenericForeignKey` field. However Django 1.8a1 has changed that and `get_field` now does return it.

If you are interested in fixing this I can provide a test case against Django test suite.

Context:
I started working on the Django REST Framework port to Django 1.8a1. We do have a couple of failing test:

{{{
tests/test_relations_generic.py:104: in test_generic_fk
    self.assertEqual(serializer.data, expected)
rest_framework/serializers.py:615: in data
    ret = super(ListSerializer, self).data
rest_framework/serializers.py:212: in data
    self._data = self.to_representation(self.instance)
rest_framework/serializers.py:565: in to_representation
    self.child.to_representation(item) for item in iterable
rest_framework/serializers.py:565: in <listcomp>
    self.child.to_representation(item) for item in iterable
rest_framework/serializers.py:419: in to_representation
    fields = [field for field in self.fields.values() if not field.write_only]
rest_framework/serializers.py:312: in fields
    for key, value in self.get_fields().items():
rest_framework/serializers.py:950: in get_fields
    model_field.unique_for_date,
E   AttributeError: 'GenericForeignKey' object has no attribute 'unique_for_date'
}}}

The associated code in the serializers:
{{{#!python
        for model_field_name, field_name in model_field_mapping.items():
            try:
                model_field = model._meta.get_field(model_field_name)
            except FieldDoesNotExist:
                continue

            unique_constraint_names |= set([
                model_field.unique_for_date,
                model_field.unique_for_month,
                model_field.unique_for_year
            ])
}}}

As for Django < 1.8, the `unique_for_date` will never be reached because the `get_field`  would raise a `FieldDoesNotExist`."	Bug	closed	Database layer (models, ORM)	1.8alpha1	Normal	invalid			Unreviewed	0	0	0	0	0	0
