On 13/09/2016 3:02 PM, Hanh Kieu wrote:
> Hey guys, I'm creating a translation app that allows you to translate
> from one object to the other. My translation model has two foreign
> keys that links to two words, and on the admin site I want the Admin
> to be able to input two different words. The words they enter should
> be saved as individual words, as well as a translation. However, it
> looks like this isn't possible at all in Django. I've been trying so
> hard to read documentation but I am struggling. My Models look like this:
>
> class Language(models.Model):
> language_text = models.CharField(max_length=200)
>
> def __str__(self):
> return self.language_text
>
>
> class Word(models.Model):
> language = models.ForeignKey(Language,on_delete=models.CASCADE)
> word_text = models.CharField(max_length=200)
>
> def __str__(self):
> return self.word_text
>
>
> class Translation(models.Model):
> #word1 belongs to one word word1 = models.OneToOneField(Word,on_delete=models.CASCADE,related_name="Translation_word1")
> #word2 belongs to another word word2 = models.OneToOneField(Word,on_delete=models.CASCADE,related_name="Translation_word2")
Word has a FK to Language so a word exists in a language and presumably
language_text will contain the name of the language like Ruby or French etc.
So for that word to exist in another language, another word in that
other language must have a FK to that other language. So if you have
enough words in enough languages it would certainly be useful to connect
them via a translation record.
But perhaps 1:1 is not what you want?
Maybe a particular word can be translated into two or three languages?
If so, you need an intermediate table which connects any one word with
many other words which belong in different languages. Sometimes too, the
same word is in more than one language with the same meaning.
One translation record needs to make a single connection between any two
word records. So your Translation needs a FK to each of two different words.
Because you probably want to enter words for which you don't have the
translation immediately to hand, it might be worthwhile permitting
Null=True and blank=True.
Hth
> I want the admin page for Translation to be able to take in two words
> and two languages and create a translation from them (rather than
> individually creating one word, then individually creating another
> word, then indiviudally creating a translation)
>
> I've tried using TranslationForm(models.ModelForm), however when I
> submit it gives me an error that there are NULL values for my models
> :C. Help I am really lost and no one has been of help, I'm getting
> really frustrated with this aspect of django.
>
> If someone could take time to actually understand my problem and help
> out that would be great please :C
>
> --
> You received this message because you are subscribed to the Google
> Groups "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to
django-users...@googlegroups.com
> <mailto:
django-users...@googlegroups.com>.
> <mailto:
django...@googlegroups.com>.
> <
https://groups.google.com/d/msgid/django-users/9ab72b11-b7b3-4c1a-bf26-3ed4befb212f%40googlegroups.com?utm_medium=email&utm_source=footer>.