﻿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
9786	Files (and subclasses) override __eq__ but not __ne__	xtian <xtian@…>	nobody	"We were trying to compare two model objects using the following function:

{{{

def allModelFieldsEqual(a, b):
    fields = [f.name for f in a._meta.fields]
    for name in fields:
        if getattr(a, name) != getattr(b, name):
            return False
    return True

}}}

This fails when the models contain FileFields, because File doesn't implement __ne__. Confusingly, because it implements __eq__, the values also compare equal.

{{{
(Pdb) !a.largeImage
<ImageFieldFile: /images/first-large-image.png>
(Pdb) !b.largeImage
<ImageFieldFile: /images/first-large-image.png>
(Pdb) !a.largeImage == b.largeImage
True
(Pdb) !a.largeImage != b.largeImage
True
}}}

It should probably be implemented as:
{{{
    def __ne__(self, other):
        return not self == other
}}}"		closed	Database layer (models, ORM)	dev		fixed			Unreviewed	0	0	0	0	0	0
