How to make uniques in Django Models? And also index a column in Django
Regarding your first question: You should look at unique_together, since this could solve your issue.
class Rating(models.Model):
content = models.OneToOneField(Content, primary_key=True)
ip = models.CharField(max_length=200, blank=True)
rating = models.IntegerField(default=0)
class Meta:
unique_together= (('content', 'ip'),)
BTW, if, as it appears from your terminology, you're using IP addresses as standing for users' identities, please don't -- it's a seriously horrible idea. Users coming in through their ISP will get their IPs changed at random times, so they might vote twice; users on a laptop connecting at various coffee shops, libraries, &c, will have always-varying IPs; users sharing a connection (e.g., apartment-mates), or even every single one of users coming in from a University campus, might get the same IP address via NAT, so only one will be able to vote... it's hard to think of any worse way to represent individuals' identities!-)
If your use of the name ip
for your "user identity" field is accidental and has nothing to do with using IP addresses there, I apologize, but in that case please do rename that field!-)